understanding precedence and associativity of operators in c